/**
 * @param {number} num
 * @return {string}
 */
var intToRoman = function (num) {
  // let I = 1;
  // let IV = 4;
  // let V = 5;
  // let IX = 9;
  // let X = 10;
  // let XL = 40;
  // let L = 50;
  // let XC = 90;
  // let C = 100;
  // let CD = 400;
  // let D = 500;
  // let CM = 900;
  // let M = 1000;

  let RomanMap = [
    ["M", 1000],
    ["CM", 900],
    ["D", 500],
    ["CD", 400],
    ["C", 100],
    ["XC", 90],
    ["L", 50],
    ["XL", 40],
    ["X", 10],
    ["IX", 9],
    ["V", 5],
    ["IV", 4],
    ["I", 1],
  ];
  let countMap = {};
  for (let i = 0; i < RomanMap.length; i++) {
    let arr = RomanMap[i];

    if (num >= arr[1]) {
      // countMap[arr[0]]
      let count = parseInt(num / arr[1]);
      countMap[arr[0]] = count;
      num = num % arr[1];
    }
  }

  let RomanStr = "";
  for (const key in countMap) {
    const count = countMap[key];
    for (let i = 0; i < count; i++) {
      RomanStr += key;
    }
  }
  return RomanStr;
};
let num = 3999;
const result = intToRoman(num);
console.log(result);
